package com.yaoyao.Trail_demo;

import java.util.Random;
import java.util.Scanner;

// 模拟双色球
public class case8 {
    public static void main(String[] args) {
        // 目标：完成双色球系统的开发
        int[] userNumbers = userselectNumbers();
        printArray(userNumbers);
        int[] luck = createLuckNumbers();
        System.out.print("本期双色球幸运号码为：");
        printArray(luck);
        judge(userNumbers,luck);

    }
    public static void printArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length-1 ? arr[i]: arr[i]+",");
        }
        System.out.println("]");
    }

    // 1、设计一个方法，让用户投注一组号码并返回（前六个是红球号码，最后一个是蓝球号码）
    public static int[] userselectNumbers() {
        // 2、创建一个整型数组，用于存储用户投注的7个号码（前六个是红球号码，最后一个是蓝球号码）
        int[] numbers = new int[7];
        // numbers = {0, 0, 0, 0, 0, 0, 0}
        //            0  1  2  3  4  5  6
        Scanner input = new Scanner(System.in);
        // 3、遍历前6个位置，让用户依次投注6个红球号码，存入
        for (int i = 0; i < numbers.length - 1; i++) {
            // i = 0, 1, 2, 3, 4, 5

            // 4、开始让用户为当前位置投注一个红球号码（1-33之间，不能重复）
            while (true) {
                System.out.println("请您输入第" + (i + 1) + "个红球号码（1-33之间，不能重复）：");
                int number = input.nextInt();
                if (number < 1 || number > 33) {
                    System.out.println("您投注的红球号码不在范围内");
                } else {
                    // 号码在1-33之间了，接着还要继续判断这个号码是否重复，不重复才可以使用。
                    if (exist(number, numbers)) {
                        System.out.println("对不起，您投注的红球号码重复了，请重新投注：");
                    } else {
                        numbers[i] = number;
                        break;
                    }

                }
            }

        }
        // 6、投注最后一个蓝球号码
        while (true) {
            System.out.println("请您投入最后一个蓝球号码：");
            int number2 = input.nextInt();
            if (number2 < 1 || number2 > 16) {
                System.out.println("对不起，您投注的蓝球号码不在范围内，请重新投注：");
            } else {
                numbers[6] = number2;
                break;
            }
        }
        return numbers;
    }

    private static boolean exist(int number, int[] numbers) {
        boolean flag = false;
        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] == 0) {
                break;
            }
            if (number == numbers[i]) {
                flag = true;
                break;
            }
        }
        return flag;
    }
    public static int[] createLuckNumbers(){
        int[] lucknumbers = new int[7];
        // 1、先进行前六个幸运红球的随机抽取
        Random ra = new Random();
        for (int i = 0; i < lucknumbers.length - 1; i++) {
            while (true) {
                int number3 = ra.nextInt(1,34);
                if(!exist(number3,lucknumbers)){
                    lucknumbers[i] = number3;
                    break;
                }
            }

        }
        // 2、再进行最后一个幸运蓝球的随机抽取
        lucknumbers[6] = ra.nextInt(1,17);
        return lucknumbers;
    }
    public static void judge(int[] userNum,int[] luckNum){
        int redCount = 0;
        int blueCount = 0;
        // 先比对红球的命中情况
        for (int i = 0; i < userNum.length - 1; i++) {
            for (int j = 0; j < luckNum.length - 1; j++) {
                if(userNum[i] == luckNum[j]){
                    redCount++;
                    break;
                }
            }

        }
        // 比对蓝球的命中情况
        blueCount = userNum[6] == luckNum[6] ? 1 : 0;
        String win = redCount +"+"+blueCount;
        System.out.println("您命中的红球数量是"+redCount);
        System.out.println("您命中的蓝球数量是"+blueCount);

        switch(win){
            case 6+"+"+1:
                System.out.println("恭喜您获得本期双色球活动一等奖，奖池为1000万");
                break;
            case 6+"+"+0:
                System.out.println("恭喜您获得本期双色球活动二等奖，奖池为500万");
                break;
            case 5+"+"+1:
                System.out.println("恭喜您获得本期双色球活动三等奖，奖池为3000元");
                break;
            case 5+"+"+0:

            case 4+"+"+1:
                System.out.println("恭喜您获得本期双色球活动四等奖，奖池为200元");
                break;
            case 4+"+"+0:

            case 3+"+"+1:
                System.out.println("恭喜您获得本期双色球活动五等奖，奖池为10元");
                break;
            case 2+"+"+1:

            case 1+"+"+1:

            case 0+"+"+1:
                System.out.println("恭喜您获得本期双色球活动六等奖，奖池为5元");
                break;
            default:
                System.out.println("很遗憾您没有中奖，但还是感谢您对福利行业做出的巨大贡献，这边预祝您下次中奖愉快哦~");
                break;
        }
    }
}
